#include<bits/stdc++.h>
using namespace std;
const int N=1e3,P=1e9+7;
static int f[N+1];
inline void self_add(int &x,int y){
  if((x+=y)>=P)x-=P;
}
inline int qpow(int a,int b){
  int r=1;
  while(b){
    if(b&1)r=1ll*r*a%P;
    a=1ll*a*a%P,b>>=1;
  }
  return r;
}
inline int com(int n,int m){
  return 1ll*f[n]*qpow(1ll*f[m]*f[n-m]%P,P-2)%P;
}
class binary_bigint{
  private:
    vector<int> v;
  public:
    binary_bigint(string s):v(s.length()){
      for(int i=0;i<v.size();i++)
        v[i]=s[v.size()-i-1]&1;
    }
    binary_bigint(vector<int> v):v(v){}
    bool operator <=(const binary_bigint &x)const{
      if(v.size()!=x.v.size())return v.size()<x.v.size();
      for(int i=v.size()-1;~i;i--)
        if(v[i]!=x.v[i])return v[i]<x.v[i];
      return true;
    }
    int val(){
      int c=0;
      for(int i=0,p=1;i<v.size();i++,self_add(p,p))
        if(v[i])self_add(c,p);
      return c;
    }
};
int main(){
  freopen("lost.in","r",stdin);
  freopen("lost.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n,k,w=0; string s,a,b; cin>>n>>k>>s>>a>>b;
  for(int i=f[0]=1;i<=n;i++)
    f[i]=1ll*f[i-1]*i%P;
  binary_bigint A(a),B(b);
  if(!k){
    string x="1",y="1";
    for(char i:s)x+='0'+(i=='L');
    for(char i:s)y+='0'+(i=='R');
    binary_bigint X(x),Y(y);
    if(A<=X&&X<=B)self_add(w,X.val());
    if(A<=Y&&Y<=B)self_add(w,Y.val());
  }
  else if(n<=25){
    vector<string> v;
    for(int S=0;S<1<<n-1;S++)
      if(__builtin_popcount(S)==k){
        string x="1",y="1";
        for(int i=0,f=0;i<n-1;i++){
          if(S>>i&1)f^=1;
          x+='0'+((s[i]=='R')^f);
        }
        for(int i=0,f=1;i<n-1;i++){
          if(S>>i&1)f^=1;
          y+='0'+((s[i]=='R')^f);
        }
        v.emplace_back(x),v.emplace_back(y);
      }
    sort(v.begin(),v.end());
    v.erase(unique(v.begin(),v.end()),v.end());
    for(auto &s:v){
      binary_bigint S(s);
      if(A<=S&&S<=B)self_add(w,S.val());
    }
  }
  else{
    vector<int> p2(n);
    for(int i=p2[0]=1;i<n;i++)
      p2[i]=2ll*p2[i-1]%P;
    int c=0,q=com(n-1,k);
    for(int i=0;i<n-1;i++)
      self_add(c,p2[i]);
    w=(2ll*p2[n-1]*q%P+1ll*c*q%P)%P;
  }
  cout<<w<<endl;
  return 0;
}